Polowanie na crackme 1 by ReWolf... by payteR

Yo! heretycy

Kuwa jestem troch zmczony, bo ca noc odprawiaem z kumplami czarn msz w opuszczonej stodole. Taka msza to wbrew pozorom nie atwa sprawa....szczeglnie rzeczy potrzebne do niej. Przede wszystkim potrzeba ci kobiety, niestarej, nie za modej, nie kurwy, nie dziewicy. Pniej trzeba w pizdu czarnego sukna i (co trudne do zdobycia) wiea krew. Naturalnie wszystkie skadniki mieszamy zostawiamy na godzink w piecyku, tak jak to radzi pan Makowicz.

No, no, no ale my tu mielimy opisywa crackme, a nie jakie bllunierstwa anty-katolickie i chyba zarazem anty jehowskie, czy co takiego. Ble..ci z jehowy to naprawd maj narbane w palicy. Mj profesorek z infy do takowych nalea i na samo wspomnienie rzyga mi si chce. Kole mia to do siebie, e by (kurwa) okrutnie kulturalny i takiii (pfu!) miy. No cholera ja z takimi nie umiem wytrzyma, a gapi si na ciebie taki jakby by gejem, czy jak jehowsk pochodn pedofila. Chyba maj u nich wysz skal dorosoci. Najlepszy by koniec roku, wszyscy przychodz zjebani na t infe, a kady chciaby sobie pobuszowa w necie. A ten zjeb wyskakuje z propozycj "Dzisiaj moecie ogldn sobie film". Fakt u nas w budzie maj taki zajefajny projektor, ktry do filmw erotycznych byby jak marzenie (obraz 2m x 2m!). Jehowa men mwi, e do dyspozycji s filmy "Potwory i spka" i "Pikny umys". Kurde ten "PU" to rozumiem, no ale "Potwory i spka".....kurwa jednak u tych jehowych to pedofile wol takich chyba do 22 lat na luzie, a co dopiero takie sexi 18-stki jak Ja ;P. Eee i tak ciula przekonalimy z kumplami, e net i koniec. Inn ciekaw sytuacj potwierdzajc dziwn wersje pedofilii u Jehowcw jest fakt, i pewnego razu znale szo przy kadym kompie obrazek w zwizku z akcj o pedofilach z netu....Uuuu, a si ba zaczem. Umwisz si na randk na czacie i zamiast 'ANi69 - anal lady' masz 'Jehowa men' w dodatku gruby i pryszczaty. Dobrze, e ja zakoczyem ju inf i nauczyem si doskonaej obsugi erda (tj. M$ Word). Ach jeli obraziem na jaki sposb twj wiatopogld to wcale nie przepraszam, bo to by mj cel. A jak ci wnerwiem to moesz mnie te postraszy wujkiem z USA Kevinem Mitcotamnikiem.  Teraz krakmnie opisz.

Owo crackme jest pierwszym tworem ReWolfa - membera najlepszej grupki producentw krakersw laj kunik na wiecie, ktrej de facto te jestem czonkiem (Cauchy twierdzi, e 'czonek' brzydko brzmi hehehehe). Do rzeczy kurwa. Crackme jest solidnie uzbrojone w wszelkiego rodzaju anty-dbg i posiada shitliste naszych ulubionych progw do projektowania ogrdka. Na shitlist dostay si m.in takie progi jak OllyDbg czy LordPE, ktry akurat jest bardzo istotny dla nas, bo crackme jest paknite dla zabawy (a jak!) najnowszym PESpinem. Protektor ten ma trik anty-dump. Polega on na tym, e exek ma ustawiony w pamici 'IMAGE SIZE' na FFFFFFFFh, czyli -1. Wic odpalamy Lorda, ale dups....wyczony zaraz. Co robi?. Przede wszystkim musisz wiedzie jak dziaa zwyczajna shitlista:

.data

Lord_pe db "Lord PE Deluxe by y0da",0

.code

invoke FindWindow,NULL,offset Lord_pe
cmp eax,0
jnz akcja_

Jeli handle okna szukanego jest rny od zera (tj. okno istnieje) to crackme zabija proces Lorda. W prosty sposb mona omin ten anty. Wchodzimy do hiew'a i szukamy stringa "Lord PE Deluxe..." i zmieniamy w nim przynajmniej jedn literk. Odpalamy takiego Lorda i crackme ju go nie wykrywa. Wic klik na proces crackme i wybieramy z menu kontekstowego "Correct Image size", pniej "Full dump". Nasuwa si pytanie: czemu nie pokazuj jak odpakowa tego diaba. Raz, po co?, dwa i na co?, trzy szkoda czasu, cztery moemy si domyle wszelkich potrzebnych importw. Tak wic ustawmy sobie oep na 00401000. Nie martw si i tak si wywali, a po za tym to te nie jest prawdziwy oep. Jednak popatrz co tam jest:

sub_401000      proc near               ; CODE XREF: ReWolf:004045FA

arg_0           = dword ptr  8
arg_4           = dword ptr  0Ch
arg_8           = dword ptr  10h

                push    ebp
                mov     ebp, esp
                pusha
                mov     esi, [ebp+arg_8]
                mov     edi, [ebp+arg_0]
                push    esi
                mov     ecx, 20h

Jak nauczye si dobrze obsugiwa ID to wiesz, e owo "CODE XREF: ReWolf:004045FA" znaczy i ta procka jest wywoywana z miejsca o offsecie 004045FA. Jednak co ta procka robi do cholery jasnej! Popatrz w to miejsce:

ReWolf:0040103F                 mov     dword ptr [esi], 67452301h
ReWolf:00401045                 mov     dword ptr [esi+4], 0EFCDAB89h
ReWolf:0040104C                 mov     dword ptr [esi+8], 98BADCFEh
ReWolf:00401053                 mov     dword ptr [esi+0Ch], 10325476h

Wujek zawsze mnie uczy, e po tym poznajemy hash md5. I chyba wiecie z wszystkich moliwych tutw o crypto, e hash jest funkcj nieodwracaln i md5 daje wynik zawsze 128 bitowy, czyli 16 bajtw. Btw: jest to wiea jeszcze implementacja Marcusa (hi!), ktra jest bardzo zoptymalizowana. Przejdmy do miejsca wywoania tej procki

loc_4045E9:                                ; CODE XREF: ReWolf:004045C7
                mov     edx, ds:dword_4045C9
                push    offset md5_        ; wynik hasha
                push    eax                ; dugo name
                push    offset unk_4063D4  ; nasz name
                call    md5_hash           ; hash proc
                jmp     short loc_40461D

; 
dword_404601    dd 30FB40D4h            ; DATA XREF: ReWolf:0040461D
                                        ; ReWolf:00404826
                dd 9FA0FF0Bh, 6BECCD2Fh, 3F258C7Ah, 1E213F2Fh, 9C004DD3h
                dd 6003E540h
; 

Te junki co tu widzisz, to cakiem fajny pomys, bo to nie losowe liczby tylko crypto sygnatury z Kanala. Jak przelecisz exeka crypto-szukadem to zobaczysz tony algosw, a tutaj jest tylko md5.

loc_40461D:                             ; CODE XREF: ReWolf:004045FF
                mov     eax, ds:dword_404601
                push    41h
                push    offset serial_
                push    66h
                push    dword ptr [ebp+8]
                call    GetDlgItemTextA
                test    eax, eax
                jz      loc_40487A
                cmp     eax, 40h
                jnz     loc_4044CA

Ta procka jak wida pobiera serial, ktry musi mie 40h bajtw. Jak nie rozumiesz czemu akurat wyczaiem, e to jest GetText to najpierw wpisz numer do crackme, a pniej dump i zobaczysz w Idzie pod odpowiednim offsetem swj serial. Idziemy dalej...

loc_4046DD:                             ; CODE XREF: ReWolf:00404644
                mov     ecx, ds:dword_404649
                xor     ecx, ecx

loc_4046E5:                             ; CODE XREF: ReWolf:00404708
                mov     eax, serial_[ecx*4]
                mov     [buffer], eax
                push    4
                push    offset buffer
                call    sub_401644      ; string -> hex
                mov     ds:dword_40646B[ecx*4], eax
                inc     ecx
                cmp     ecx, 10h
                jnz     short loc_4046E5

Procka ta to nic innego tylko zmiana seriala na hex, tyle e troch nietypowa, bo serial po konwersji bdzie wyglda tak:

XX YY 00 00 XX YY 00 00 XX YY 00 00 ...

X i Y to liczby naturalne 8]

Co dalej nam tu ReWolf ugotowa:

loc_40470E:

   movzx   eax, hash_name[ecx]      ; bajt z hasha [oznaczam jako 'a']
   mul     al                       ; a^2
   push    eax                      ; zapisz na stos a^2
   movzx   eax, hash_name[ecx]      ; a znowu
   push    ecx                      ; zapis ecx [robi za licznik]
   mov     ecx, hex_serial[ebx*8]   ; word seriala [oznaczam jako 'x']
   mul     ecx                      ; a*x
   pop     ecx                      ; licznik spowrotem do ecx
   sub     [esp], eax               ; (a^2) - a*x
   pop     eax                      ; w eax wynik poprzedniego dziaania
   add     eax, hex_serial+4[ebx*8] ; drugi word z seriala [oznaczam jako 'c']
   test    eax, eax                 ; jest dodawany do eax
   jnz     loc_4044CA               ; a jeli rne od zera to egnaj Gienia ;P
   inc     ecx                      ; ecx + 1
   push    ecx                      ; zapis ecx
   shr     ecx, 1                   ; ecx/2 = shr ecx,1
   jb      loc_404817               ; jeli poniej 1 to od nowa
   pop     ecx                      ; ecx = stara warto
   inc     ebx                      ; ebx+1
   cmp     ebx, 8                   ; jeli ebx = 8 i wszystko ok
   jnz     short loc_40470E
   jmp     short loc_4047B0         ; to info, e "You are haxor ;P"

Jak zrekompilujesz sobie to crackme (polecam!) zauwaysz pewne rzeczy. Np. ta kocowa procka z 'shr ecx,1' sprawdza, czy ma do czynienia z bajtem nieparzystym hasha jeli tak to procka si powtarza dla nastpnego bajtu, wtedy ecx jest podnoszone o 1 i wiadomo, i by to parzysty bajt. Ecx jest zerowane, procka powtarza si dla nastpnych dwch bajtw, za owe dwa wordy z seriala, musz zgadza si w tej procedurze dla obu bajtw z hasha. Troch zamotane, ale jak sprowadzisz to do postaci matemetycznej sprawa staje si jasna jak soce ;).....w nocy ;P

a - nieparzysty bajt hasha z naszego name
b - parzysty bajt
x - nieparzysty word seriala
c - parzysty word serial (!word = 2 bajty!)
^ - potgowanie. NIE xor jak w C
* - kokosy ;P, czyli mnoenie
+ - spytaj si Mitnicka, bo Ja ni chuj nie wiem!

Ukad rwna:

(a^2) - a*x + c = 0

(b^2) - b*x + c = 0

wic:

(a^2) - a*x + c  = (b^2) - b*x + c ; c si skraca

(a^2) - a*x  =  (b^2) - b*x

(a^2) - (b^2) = a*x - b*x

Na potrzeby keygena i tak si to skraca do:

(a^2) - (b^2) = (a-b)

(a-b) to nic innego jak ilo x-w

c za obliczy mona z takiego wzoru (b czy a bez rnicy):

(b^2) - b*x + c = 0

c = b*x - (b^2)

Przykad tego dziaania:

a = AAh
b = 7

70E4 - AAx + c = 0
31 - 7x + c = 0
31 - 7x = 70E4 - AAx
A3x = 70B3
x = B1

oblicz c:

31 - 4D7 = -c
c = 4A6

Pisz to tylko dlatego aby poj o co do koca mi chodzi, bo takie rwnanie to podstawwka, wstyd nie umie ;P ;P ;P. Jednak zkeygenowanie tego w ASM nie jest takie atwe jak wykumanie schematu. Zobacz do mojego keygena to zrozumiesz. Przede wszystkim zwr uwag na owe i temu podobne procki:

        imul eax,eax
        imul ebx,ebx
        cmp ebx,eax
        ja ebx_min  ;to ci interesuje
        sub eax,ebx ; lewa strona rwnania

Suy to takiej idei, aby nie osiga liczb ujemnych bo prowadzi to do takich sytuacji:
np.

 -x = -3

  x = 3

 -x = FFFFFFFDh = -3

A nasze liczby mog mie tylko 2 bajty, a nie jak tu 4

Wic to ju koniec........ojej, a co kurwa mylae, e bdzie wicej ;P

Tradycyjne pozdrowienia:

HTB TEAM............kurwa, banda wariatw, ale jaka :)
ReWolf..............ostatnio nic nie chce mi si, wic cm2 przepadnie :\
FiNS................a ciebie musz na tanie wino raz zacign :)
DJ_O................rusz si, bo dbg ci zardzewieje ;P
Mama................sorry za te rachunki za modem :\
Browar Tyski........gratulacje 375 lecia, bo dobre to piwo

Kurd, jestem teraz lekko podpity, ale fajnie tak si pisz ;)

Nie chce tego jeszcze koczy wic doklej wam tu jaki text piosenki :P

Chwila....co poszukam.....moment...ach jest:

Violent torture,
Death has arrived,
Armageddon,
Terror and fright,
Bleeding corpses,
Rotting decay

Anarchy,
Violent torture,
Antichrist,
Lucifer,
Son of satan
Pure Fucking Armageddon

Pure Fucking Armageddon!

Konkurs!!!!

Wylij mi maila  z odpowiedzi jaki zesp to piewa, bd te daje namiastki piewu....he he he he he he he he he he

Keygen saem na list, nich editor poszuka, bo ja nie mog impulsw marnowa....please rev poszukaj ;) [rev: i co takiemu powiedzie ??? :)]

--
payteR
mailto:payter@o2.pl